0 REM--AHOY--JAN ISSUE--INTERRUPT MUSIC--PROG PAGE 21 1 REMNANTS OF MY OLD PIANO... (C) 1983 BY PETE LOBL RIVER CITY, U.S.A. 4 ONQQGOTO50 5 POKE52,89:POKE56,89:CLR:H=1:POKE53280,0:POKE53281,0 7 PRINTCHR$(8):GOSUB10000:I=-RND(TI) 8 PRINT"WANT TO RESET THE CLOCKS?(Y/N)";:GOSUB5310:IFLEFT$(IN$,1)<>"Y"THEN20 9 FORI=56331TO56238STEP-1:POKEI,0:NEXT:FORI=56587TO56584STEP-1:POKEI,0:NEXT 20 A=PEEK(56328):B=PEEK(56584):PRINT"PLEASE WAIT, READING IN DATA..." 21 DIMO1%(12),O2%(12),O3%(12),O4%(12),O5%(12),O6%(12),O7%(12),O8(12) 23 DIMN$(15):FORI=1TO15:READN$(I):NEXT 24 DIML$(5):FORI=1TO5:READL$(I):NEXT 25 DIMNS$(12):FORI=1TO12:READNS$(I):NEXT 26 DIMNF$(12):FORI=1TO12:READNF$(I):NEXT 27 DIMNU(15):FORI=1TO15:READNU(I):NEXT 28 FORI=54272TO54296:POKEI,0:NEXT 30 FORI=1TO12:READO1%(I):NEXT 31 FORI=1TO12:READO2%(I):NEXT 32 FORI=1TO12:READO3%(I):NEXT 33 FORI=1TO12:READO4%(I):NEXT 34 FORI=1TO12:READO5%(I):NEXT 35 FORI=1TO12:READO6%(I):NEXT 36 FORI=1TO12:READO7%(I):NEXT 37 FORI=1TO12:READO8(I):NEXT 40 V1=6*4096-1:V2=8*4096-1:T=0:O=5:N=1:F1=8192:F2=F1:V=1:B1=V:B2=V:A1=0:A2=A1 41 SY=5*4096+10*256+48:YS=5*4096+10*256+48+11:N2=N:SP=57:C1=23124:C2=C1+41 42 S$="SHORT ":L$="TIED ":L$(0)="LENGTH =":Q$="" 45 O2=O:T2=T:N2=N 47 FORI=22784TO23205:READA:POKEI,A:NEXT 50 IFV=2 THEN240 51 PRINT"[147]BLOCKS FREE";INT(F1/3);" : :"; 52 PRINT" VOICE 1":SYSC1 53 PRINT"POSITION"TAB(16)N;TAB(22)N+1;TAB(28)N+2 55 PRINT"VALUES"TAB(16)PEEK(N+V1)" "PEEK(N+V1+1)" "PEEK(N+V1+2) 58 PRINT"MEANING"TAB(10);:A=PEEK(N+V1):B=PEEK(N+V1+1):C=PEEK(N+V1+2) 60 IFA=0THENPRINT"AT/DEC ="B"SUS/REL ="C:GOTO100 63 J=0:FORI=1TO15:IFA=NU(I)THENJ=I 64 NEXT:IFJ=0THENPRINTL$(0)A;:GOTO80 66 Z=INT(J/3):Y=J-Z*3:IFYTHENZ=Z+1 67 IFY=1THENPRINTS$; 68 IFY=0THENPRINTL$; 69 PRINTL$(Z)" "; 80 J=B*256+C:FORI=1TO12:IFJ=O1%(I)THENA=1:B=I:GOTO90 82 IFJ=O2%(I)THENA=2:B=I:GOTO90 83 IFJ=O3%(I)THENA=3:B=I:GOTO90 84 IFJ=O4%(I)THENA=4:B=I:GOTO90 85 IFJ=O5%(I)THENA=5:B=I:GOTO90 86 IFJ=O6%(I)THENA=6:B=I:GOTO90 87 IFJ=O7%(I)THENA=7:B=I:GOTO90 88 IFJ=O8(I)THENA=8:B=I:GOTO90 89 NEXT:IFJ>0THENPRINT" ? NOTE":GOTO100 90 I=13:IFJ=0THENPRINT" REST":GOTO100 92 NEXT:PRINTA;:IN$=NS$(B):A$=NF$(B):IFA$=IN$THENPRINTA$:GOTO100 94 PRINTIN$" ("A$")" 100 PRINT"" 102 PRINT"L[146]=LOAD S[146]=SAVE G[146]=GOTO N[146]=NEXT B[146]=BACK" 104 PRINT"C[146]=CHANGE P[146]=PLAY T[146]=TRANSFER F[146]=FIND ?[146]=DUMP" 105 PRINT"H[146]=HELP Z[146]=SPEED V[146]=VOLUME E[146]=EDIT" 106 PRINT"CURRENT BLOCK ="B1 108 PRINT"OCTAVE "O" TEMPO "T" SPEED "SP 110 A$="":PRINT"INPUT : ";:H=.:GOSUB5310:H=1:A$=IN$ 111 IFLEFT$(A$,1)="H"ORA$="*H"THENGOSUB7000:GOTO50 112 IFLEFT$(A$,1)="*"THEN141 113 A=VAL(LEFT$(A$,1)):IFATHENGOSUB422:O=A:GOTO116 114 B$=LEFT$(A$,2):IFRIGHT$(B$,1)=" "THENB$=LEFT$(B$,1) 115 GOTO117 116 B$=MID$(A$,2,2):IFRIGHT$(B$,1)=" "THENB$=LEFT$(B$,1) 117 J=0:FORI=1TO12:IFB$=NS$(I)THENJ=I 118 NEXT:IFJTHEN122 119 J=0:FORI=1TO12:IFB$=NF$(I)THENJ=I 120 NEXT:IFJTHEN122 121 GOTO402 122 ONOGOSUB400,410,420,430,440,450,460,470 123 B=INT(A/256):C=A-B*256:POKEV1+N+1,B:POKEV1+N+2,C 124 J=O:FORI=1TOLEN(A$):IFMID$(A$,I,1)=" "THENJ=I 125 NEXT:A$=RIGHT$(A$,LEN(A$)-J):J=0:FORI=1TO15:IFA$=N$(I)THENJ=I 126 NEXT:IFJ=0THEND=VAL(A$):GOTO128 127 D=NU(J):GOTO130 128 IFD>255THENPRINTQ$;"DURATION TOO LARGE !!":GOSUB8000:GOTO50 129 IFD<=0THENPRINTQ$;"DURATION CAN'T BE LESS THAN 1 !!":GOSUB8000:GOTO50 130 D=D+T:IFD>255ORD<=0THEN128 131 POKEN+V1,D:B1=B1+1:N=N+3:F1=F1-3 132 IFF1<1THENPRINTQ$"ALL BLOCKS FULL FOR VOICE 1":GOSUB8000:GOTO426 133 IFRIGHT$(A$,1)="H"ORRIGHT$(A$,2)="H "THEN461 134 IFVAL(A$)THEN138 135 IFRIGHT$(A$,1)="S"ORRIGHT$(A$,2)="S "THEN471 136 POKEN+V1,1:POKEN+V1+1,0:POKEN+V1+2,0:GOTO140 137 POKEN+V1+2,0:GOTO140 138 IFA1=0THEN50 139 POKEN+V1,A1:POKEN+V1+1,0:GOTO137 140 B1=B1+1:N=N+3:F1=F1-3:GOTO424 141 A$=RIGHT$(A$,1):IFA$<>"G"THEN144 142 PRINTQ$"TO WHAT BLOCK ? ";:GOSUB5310:J=VAL(IN$):IFJ>2830ORJ<1THEN50 143 B1=J:F1=8193-B1*3:N=B1*3-2:GOTO50 144 IFA$<>"N"THEN147 145 J=B1:J=J+1:IFJ<2831THEN143 146 GOTO50 147 IFA$<>"B"THEN150 148 J=B1:J=J-1:IFJ>0THEN143 149 GOTO50 150 IFA$<>"L"THEN152 151 GOTO4000 152 IFA$<>"P"THEN165 153 IFP=1THENSYS5*4096+9*256+15*16+10:POKE54296,0:P=0:GOTO50 154 PRINT"[147]WHICH VOICES DO YOU WANT ? (1/2/B) ";:GOSUB5310:A$=IN$ 155 QQ=5*4096+9*256:IFA$="2"THENPOKEQQ+68,0:POKEQQ+109,0:POKEQQ+21,0:GOTO160 156 PRINT"WHAT WAVEFORM FOR VOICE 1 ? (T/S/P/N) ";:GOSUB5310:A1=1:GOSUB433 157 POKEQQ+68,WV:POKEQQ+109,WV:POKEQQ+21,WV-1 158 PRINT"WHAT BLOCK DOES IT START AT ? ";:GOSUB5310:VV=1:GOSUB452 159 IFA$="1"THENSYSQQ+12*16:P=1:POKEQQ+114,0:POKEQQ+85,0:GOTO50 160 PRINT"WHAT WAVEFORM FOR VOICE 2 ? (T/S/P/N) ";:GOSUB5310:A1=2:GOSUB433 161 POKEQQ+114,WV:POKEQQ+85,WV-1 162 PRINT"WHAT BLOCK DOES IT START AT ? ";:GOSUB5310:VV=2:GOSUB452 163 SYSQQ+12*16:P=1:GOTO50 165 IFA$<>"C"THEN185 166 PRINT"[147]YOUR CHOICE ? (V/T/DSR/AU/TI/FS/X) ";:GOSUB5310:IFIN$="X"THEN50 167 IFIN$="T"THENPRINT"TEMPO ";:GOSUB5310:T=VAL(IN$):GOTO166 168 IFIN$="DSR"THENPRINT"ATTACK/DECAY ? ";:GOSUB5310:A=VAL(IN$):GOTO170 169 GOTO172 170 PRINT"SUSTAIN/RELEASE ? ";:GOSUB5310:SR=VAL(IN$):IFA>255ORSR>255THEN166 171 POKEN+V1,0:POKEN+V1+1,A:POKEN+V1+2,SR:B1=B1+1:N=N+3:F1=F1-3:GOTO166 172 IFIN$="V"THENV=V+1:V=V+2*(V=3):GOTO166 173 IFIN$="AU"THENPRINT"YOUR NEW SEPERATION ? ";:GOSUB5310:A1=VAL(IN$):GOTO166 174 IFIN$<>"FS"THEN473 175 PRINT"[147]STARTING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 176 J=VAL(IN$)-A:IFA<1THEN166 177 PRINT"SLOWER OR FASTER ? (S/F) ";:GOSUB5310:IFIN$="S"THENR=2:K=1:GOTO179 178 R=.5:K=0 179 QQ=6*4096+A*3-3:FORI=QQTOQQ+J*3STEP3:IFPEEK(I)<2THEN182 180 A=INT(PEEK(I)*R)+K:IFA>255THENA=255 181 POKEI,A 182 NEXT:GOTO166 185 IFA$<>"T"THEN195 186 PRINT"[147]BEGINING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 187 B=VAL(IN$):PRINT"ORIGIN VOICE ";:GOSUB5310:C=VAL(IN$):J=B-A:IFJ<1THEN50 188 PRINT"DESTINATION BLOCK ";:GOSUB5310:B=VAL(IN$):PRINT"ENDING VOICE ";:GOSUB5310 189 R=VAL(IN$):IFC=1THENQQ=6*4096:GOTO191 190 QQ=8*4096 191 R=8*4096:IFR=1THENR=6*4096 193 FORI=QQ+A*3-3TOQQ+A*3-3+J*3+2:POKER+B*3-3,PEEK(I):R=R+1:NEXT 194 GOTO50 195 IFA$<>"X"THEN197 196 SYS5*4096+9*256+15*16+10:POKE54296,0:P=0:PRINTQ$CHR$(9)"[145][145]":GOTO20000 197 IFA$<>"S"THEN210 198 PRINT"[147]STARTING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 199 B=VAL(IN$):PRINT"VOICE ";:GOSUB5310:C=VAL(IN$):IFB-A<1THEN50 200 IFC=1ORC=2THEN202 201 GOTO50 202 QQ=8*4096:IFC=1THENQQ=6*4096 204 R=QQ+A*3-3:QQ=R+B*3:LO=12*4096+22:POKELO+1,INT(R/256) 205 POKELO,R-(INT(R/256))*256:POKELO+3,INT(QQ/256):POKELO+2,QQ-(INT(QQ/256))*256 206 PRINT"FILE NAME ? ";:GOSUB5310:LO=LO-16:IFLEN(IN$)=0THENDV=1:GOTO208 207 FORI=1TOLEN(IN$):POKELO+I-1,ASC(MID$(IN$,I,1)):NEXT:DV=1 208 POKELO-1,LEN(IN$):PRINT"DISK OR TAPE?";:GOSUB5310:IFLEFT$(IN$,1)="D"THENDV=8 209 POKE5*4096+10*256+10,DV:SYS5*4096+10*256+7:GOTO50 210 IFA$<>"F"THEN230 211 PRINT"[147]STARTING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 212 B=VAL(IN$):B=B-A:IFB<1THEN50 213 PRINT"VOICE ";:GOSUB5310:C=VAL(IN$):IFC=1THENC=6*4096:GOTO215 214 C=8*4096 215 QW=C:A=C+A*3-3:LO=12*4096+32-1:C=1 216 PRINT"MEMBER"C;:GOSUB5310;:IFVAL(IN$)=0THEN220 217 IFVAL(IN$)<0ORVAL(IN$)>255THEN216 218 POKEC+LO,VAL(IN$):C=C+1:GOTO216 220 C=C-1:PRINT"SEARCHING FOR ";:FORI=1TOC:PRINTPEEK(LO+I);:NEXT:PRINT 221 FOI=ATOA+B*3:FORJ=1TOC:IFPEEK(I+J-1)=PEEK(LO+J)THENNEXT:GOTO223 222 J=C+1:NEXT:GOTO224 223 QQ=(INT((I-QW)/3))+1:PRINT"BLOCK"QQ"POSITION"QQ*3-(INT((I-QW)/(QQ*3))+1) 224 NEXT:PRINT"HIT A KEY TO CONTINUE." 225 GETR$:IFR$=""THEN225 226 GOTO50 230 IFA$<>"E"THEN500 231 PRINTQ$"WHAT POSITION ";:GOSUB5310:A=VAL(IN$):PRINT"WHAT VALUE ";:GOSUB5310 232 B=VAL(IN$):IFB>255ORA<0THEN50 233 POKE6*4096+A-1,B:GOTO50 240 PRINT"[147]BLOCKS FREE";INT(F2/3);" : :"; 242 PRINT" VOICE 2":SYSC2 243 PRINT"POSITION"TAB(16)N2;TAB(22)N2+1;TAB(28)N2+2 245 PRINT"VALUES"TAB(16)PEEK(N2+V2)" "PEEK(N2+V2+1)" "PEEK(N2+V2+2) 248 PRINT"MEANING"TAB(10);:A=PEEK(N2+V2):B=PEEK(N2+V2+1):C=PEEK(N2+V2+2) 250 IFA=0THENPRINT"AT/DEC ="B"SUS/REL ="C:GOTO280 253 J=0:FORI=1TO15:IFA=NU(I)THENJ=I 254 NEXT:IFJ=0THENPRINTL$(0)A;:GOTO260 256 Z=INT(J/3):Y=J-Z*3:IFYTHENZ=Z+1 257 IFY=1THENPRINTS$; 258 IFY=0THENPRINTL$; 259 PRINTL$(Z)" "; 260 REM 261 J=B*256+C:FORI=1TO12:IFJ=O1%(I)THENA=1:B=I:GOTO270 262 IFJ=O2%(I)THENA=2:B=I:GOTO270 263 IFJ=O3%(I)THENA=3:B=I:GOTO270 264 IFJ=O4%(I)THENA=4:B=I:GOTO270 265 IFJ=O5%(I)THENA=5:B=I:GOTO270 266 IFJ=O6%(I)THENA=6:B=I:GOTO270 267 IFJ=O7%(I)THENA=7:B=I:GOTO270 268 IFJ=O8(I)THENA=8:B=I:GOTO270 269 NEXT:IFJ>0THENPRINT" ? NOTE":GOTO280 270 I=13:IFJ=0THENPRINT" REST":GOTO280 272 NEXT:PRINTA;:IN$=NS$(B):A$=NF$(B):IFA$=IN$THENPRINTA$:GOTO280 274 PRINTIN$" ("A$")" 280 PRINT"" 282 PRINT"L[146]=LOAD S[146]=SAVE G[146]=GOTO N[146]=NEXT B[146]=BACK E[146]=EDT"; 284 PRINT"C[146]=CHANGE P[146]=PLAY T[146]=TRANSFER F[146]=FIND ?[146]=DUMP" 285 PRINT"H[146]=HELP Z[146]=SPEED V[146]=VOLUME E[146]=EDIT" 286 PRINT"CURRENT BLOCK ="B2 288 PRINT"OCTAVE "O2" TEMPO "T2" SPEED "SP 290 A$="":PRINT"INPUT : ";:H=.:GOSUB5310:H=1:A$=IN$ 291 IFLEFT$(A$,1)="H"ORA$="*H"THENGOSUB7000:GOTO50 292 IFLEFT$(A$,1)="*"THEN321 293 A=VAL(LEFT$(A$,1)):IFATHENGOSUB422:O2=A:GOTO296 294 B$=LEFT$(A$,2):IFRIGHT$(B$,1)=" "THENB$=LEFT$(B$,1) 295 GOTO297 296 B$=MID$(A$,2,2):IFRIGHT$(B$,1)=" "THENB$=LEFT$(B$,1) 297 J=0:FORI=1TO12:IFB$=NS$(I)THENJ=I 298 NEXT:IFJTHEN302 299 J=0:FORI=1TO12:IFB$=NF$(I)THENJ=I 300 NEXT:IFJTHEN302 301 GOTO1402 302 ONO2GOSUB400,410,420,430,440,450,460,470 303 B=INT(A/256):C=A-B*256:POKEV2+N2+1,B:POKEV2+N2+2,C 304 J=0:FORI=1TOLEN(A$):IFMID$(A$,I,1)=" "THENJ=I 305 NEXT:A$=RIGHT$(A$,LEN(A$)-J):J=0:FORI=1TO15:IFA$=N$(I)THENJ=I 306 NEXT:IFJ=0THEND=VAL(A$):GOTO308 307 D=NU(J):GOTO310 308 IFD>255THENPRINTQ$;"DURATION TOO LARGE !!":GOSUB8000:GOTO50 309 IFD<=0THENPRINTQ$;"DURATION CAN'T BE LESS THAN 1 !!":GOSUB8000:GOTO50 310 D=D+T2:IFD>255ORD<=0THEN308 311 POKEN2+V2,D:B2=B2+1:N2=N2+3:F2=F2-3 312 IFF2<1THENPRINTQ$"ALL BLOCKS FULL FOR VOICE 1":GOSUB8000:GOTO1426 313 IFRIGHT$(A$,1)="H"ORRIGHT$(A$,2)="H "THEN1461 314 IFVAL(A$)THEN318 315 IFRIGHT$(A$,1)="S"ORRIGHT$(A$,2)="S "THEN1471 316 POKEN2+V2,1:POKEN2+V2+1,0:POKEN2+V2+2,0:GOTO320 317 POKEN2+V2+2,0:GOTO320 318 IFA2=0THEN50 319 POKEN2+V2,A2:POKEN2+V2+1,0:GOTO317 320 B2=B2+1:N2=N2+3:F2=F2-3:GOTO1424 321 A$=RIGHT$(A$,1):IFA$<>"G"THEN324 322 PRINTQ$"TO WHAT BLOCK ? ";:GOSUB5310:J=VAL(IN$):IFJ>2830ORJ<1THEN50 323 B2=J:F2=8193-B2*3:N2=B2*3-2:GOTO50 324 IFA$<>"N"THEN327 325 J=B2:J=J+1:IFJ<2831THEN323 326 GOTO50 327 IFA$<>"B"THEN330 328 J=B2:J=J-1:IFJ>0THEN323 329 GOTO50 330 IFA$<>"L"THEN332 331 GOTO4000 332 IFA$<>"P"THEN345 333 IFP=1THENSYS5*4096+9*256+15*16+10:POKE54296,0:P=0:GOTO50 334 PRINT"[147]WHICH VOICES DO YOU WANT ? (1/2/B) ";:GOSUB5310:A$=IN$ 335 QQ=5*4096+9*256:IFA$="2"THENPOKEQQ+68,0:POKEQQ+109,0:POKEQQ+21,0:GOTO340 336 PRINT"WHAT WAVEFORM FOR VOICE 1 ? (T/S/P/N) ";:GOSUB5310:A1=1:GOSUB433 337 POKEQQ+68,WV:POKEQQ+109,WV:POKEQQ+21,WV-1 338 PRINT"WHAT BLOCK DOES IT START AT ? ";:GOSUB5310:VV=1:GOSUB452 339 IFA$="1"THENSYSQQ+12*16:P=1:POKEQQ+114,0:POKEQQ+85,0:GOTO50 340 PRINT"WHAT WAVEFORM FOR VOICE 2 ? (T/S/P/N) ";:GOSUB5310:A1=2:GOSUB433 341 POKEQQ+114,WV:POKEQQ+85,WV-1 342 PRINT"WHAT BLOCK DOES IT START AT ? ";:GOSUB5310:VV=2:GOSUB452 343 SYSQQ+12*16:P=1:GOTO50 345 IFA$<>"C"THEN365 346 PRINT"[147]YOUR CHOICE ? (V/T/DSR/AU/TI/FS/X) ";:GOSUB5310:IFIN$="X"THEN50 347 IFIN$="T"THENPRINT"TEMPO";:GOSUB5310:T2=VAL(IN$):GOTO346 348 IFIN$="DSR"THENPRINT"ATTACK/DECAY ? ";:GOSUB5310:A=VAL(IN$):GOTO350 349 GOTO352 350 PRINT"SUSTAIN/RELEASE ? ";:GOSUB5310:SR=VAL(IN$):IFA>255ORSR>255THEN346 351 POKEN2+V2,0:POKEN2+V2+1,A:POKEN2+V2+2,SR:B2=B2+1:N2=N2+3:F2=F2-3:GOTO346 352 IFIN$="V"THENV=V+1:V=V+2*(V=3):GOTO346 353 IFIN$="AU"THENPRINT"YOUR NEW SEPERATIOIN ? ";:GOSUB5310:A2=VAL(IN$):GOTO346 354 IFIN$<>"FS"THEN1473 355 PRINT"[147]STARTING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 356 J=VAL(IN$)-A:IFA<1THEN346 357 PRINT"SLOWER OR FASTER ? (S/F) ";:GOSUB5310:IFIN$="S"THENR=2:K=1:GOTO359 358 R=.5:K=0 359 QQ=8*4096+A*3-3:FORI=QQTOQQ+J*3STEP3:IFPEEK(I)<2THEN362 360 A=INT(PEEK(I)*R)+K:IFA>255THENA=255 361 POKEI,A 362 NEXT:GOTO346 365 IFA$<>"T"THEN375 366 PRINT"[147]BEGINNING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 367 B=VAL(IN$):PRINT"ORIGIN VOICE ";:GOSUB5310:C=VAL(IN$):J=B-A:IFJ<1THEN50 368 PRINT"DESTINATION BLOCK ";:GOSUB5310:B=VAL(IN$):PRINT"ENDING VOICE ";:GOSUB5310 369 R=VAL(IN$):IFC=1THENQQ=6*4096:GOTO191 370 QQ=8*4096 371 IFR=1THENR=6*4096:GOTO193 372 R=8*4096 373 FORI=QQ+A*3-3TOQQ+A*3-3+J*3+2:POKER+B*3-3,PEEK(I):R=R+1:NEXT 374 GOTO50 375 IFA$<>"X"THEN377 376 SYS5*4096+9*256+15*16+10:POKE54296,0:P=0:PRINTQ$CHR$(9)"[145][145]":GOTO20000 377 IFA$="S"THEN198 390 IFA$<>"F"THEN2410 391 PRINT"[147]STARTING BLOCK ";:GOSUB5310:A=VAL(IN$):PRINT"ENDING BLOCK ";:GOSUB5310 392 B=VAL(IN$):B=B-A:IFB<1THEN50 393 PRINT"VOICE ";:GOSUB5310:C=VAL(IN$):IFC=1THENC=6*4096:GOTO395 394 C=8*4096 395 QW=C:A=C+A*3-3:LO=12*4096+32-1:C=1 396 PRINT"MEMBER"C;:GOSUB5310;:IFVAL(IN$)=0THEN2400 397 IFVAL(IN$)<0ORVAL(IN$)>255THEN396 398 POKEC+LO,VAL(IN$):C=C+1:GOTO396 400 A=O1%(J):RETURN 402 IFLEFT$(A$,1)="R"THENA=0:GOTO123 403 PRINTQ$"IMPROPER NOTE !!":GOSUB8000:GOTO50 410 A=O2%(J):RETURN 420 A=O3%(J):RETURN 422 IFA=9THENA=8 423 RETURN 424 IFF1<0THENPRINTQ$"ALL BLOCKS FULL FOR VOICE 1":GOSUB8000:GOTO426 425 GOTO50 426 B1=B1-1:N=N-3:F1=F1+3:GOTO50 430 A=O4%(J):RETURN 433 IFIN$="S"THENWV=33:RETURN 434 IFIN$="N"THENWV=129:RETURN 435 IFIN$<>"P"THEN439 436 PRINT"[147]LOW PULSE (0-255) ?[160]";:GOSUB5310:A=VAL(IN$):PRINT"HIGH PULSE (0-15) ? "; 437 GOSUB5310:WV=65:B=VAL(IN$):IFA<0ORA>255THENA=127 438 GOTO456 439 WV=17:RETURN 440 A=O5%(J):RETURN 450 A=O6%(J):RETURN 452 LO=VAL(IN$):IFLO<1ORLO>2730THENLO=1 453 IFVV=2THEN455 454 A=6*4096+(LO*3-3):POKEQQ+216,A-(INT(A/256))*256:POKEQQ+255,INT(A/256):RETURN 455 A=8*4096+(LO*3-3):POKEQQ+221,A-(INT(A/256))*256:POKEQQ+229,INT(A/256):RETURN 456 IFB<0ORB>15THENB=7 457 IFA1=1THENPOKE54274,A:POKE54275,B:RETURN 459 POKE54281,A:POKE54282,B:RETURN 460 A=O7%(J):RETURN 461 B$=RIGHT$(A$,2):IFLEFT$(B$,1)=" "ORA$="H"THEN134 462 GOTO50 470 A=O8(J):RETURN 471 B$=RIGHT$(A$,2):IFLEFT$(B$,1)=" "ORA$="S"THEN136 472 POKEN+V1,2:POKEN+V1+1,0:GOTO137 473 IFIN$<>"TI"THEN166 474 PRINT"[147]CLOCK 1 EQUAL ";:GOSUB5310:IFVAL(IN$)=0THEN480 475 A=LEN(IN$):IFA>6ORIN$=""THEN166 476 IFA<>6THENFORI=1TO6-A:IN$="0"+IN$:NEXT 477 TE=VAL(LEFT$(IN$,1))*16+VAL(MID$(IN$,2,1))*16:IFTE<256THENPOKE56331,TE 478 TE=VAL(MID$(IN$,4,1))+VAL(MID$(IN$,3,1))*16:IFTE<256THENPOKE56330,TE 479 TE=VAL(RIGHT$(IN$,1))+VAL(MID$(IN$,5,1))*16:IFTE<256THENPOKE56329,TE:GOTO481 480 FORI=56331TO56329STEP-1:POKEI,0:NEXT 481 PRINT"[147]CLOCK 2 EQUAL ";:GOSUB5310:IFVAL(IN$)=0THEN490 482 A=LEN(IN$):IFA>6ORIN$=""THEN50 483 IFA<>6THENFORI=1TO6-A:IN$="0"+IN$:NEXT 484 TE=VAL(LEFT$(IN$,1))*16+VAL(MID$(IN$,2,1))*16:IFTE<256THENPOKE56587,TE 485 TE=VAL(MID$(IN$,4,1))+VAL(MID$(IN$,3,1))*16:IFTE<256THENPOKE56586,TE 486 TE=VAL(RIGHT$(IN$,1))+VAL(MID$(IN$,5,1))*16:POKE56585,TE:POKE56584,0:POKE56328,0:GOTO50 490 FORI=56587TO56584STEP-1:POKEI,0:NEXT:POKE56328,0:GOTO50 500 IFA$="V"THEN550 505 IFA$="?"THEN49000 510 IFA$<>"Z"THEN50 511 PRINT"[147]NEW SPEED ? ";:GOSUB5310:A=VAL(IN$):IFA<1ORA>255THEN50 512 POKE56325,A:SP=A:GOTO50 550 PRINT"[147]FILTER VOICE 1?(Y/N)";:GOSUB5310:VW=0:IFLEFT$(IN$,1)="Y"THENVW=1 552 PRINT"FILTER VOICE 2 ? (Y/N) ";:GOSUB5310:IFLEFT$(IN$,1)="Y"THENVW=VW+2 556 PRINT"RESONANCE? (0-15) ";:GOSUB5310:IN=INT(VAL(IN$)):IFIN<0ORIN>15THENIN=0 558 POKE54295,VW+IN*16:PRINT"[147]WANT HI-PASS FILTER ? (Y/N) ";:GOSUB5310 560 VW=0:IFLEFT$(IN$,1)="Y"THENVW=64 562 PRINT"WANT BAND-PASS FILTER? (Y/N) ";:GOSUB5310:IFLEFT$(IN$,1)="Y"THENVW=VW+32 564 PRINT"WANT LOW-PASS FILTER ? (Y/N) ";:GOSUB5310:IFLEFT$(IN$,1)="Y"THENVW=VW+16 566 PRINT"WHAT VOLUME ? (0-15) ";:GOSUB5310:IN=INT(VAL(IN$)):IFIN<0ORIN>15THENIN=7 568 IN=VW+IN:PRINT"[147]WHAT HIGH SETTING ? (0-15) ";:GOSUB5310:VW=INT(VAL(IN$)) 570 IFVW<0ORVW>15THENVW=0 572 PRINT"WHAT LOW SETTING ? (0-255) ";:GOSUB5310:VW=INT(VAL(IN$)) 574 IFVW<0ORVW>255THENVW=0 576 POKE54294,VW:POKE54296,IN:GOTO50 1000 DATASS,S,SH,ES,E,EH,QS,Q,QH,HS,H,HH,WS,W,WH,SIXTEENTH,EIGHTH,QUARTER,HALF 1001 DATAWHOLE 1005 DATAC,C#,D,D#,E,F,F#,G,G#,A,A#,B 1007 DATAC,DB,D,EB,E,F,GB,G,AB,A,BB,B 1009 DATA6,7,8,14,15,16,30,31,32,62,63,64,126,127,128 1010 DATA268,284,301,318,337,358,379,401,425,451,477,506 1012 DATA536,568,602,637,675,716,758,803,851,902,955,1012 1014 DATA1072,1136,1204,1275,1351,1432,1517,1607,1703,1804,1911,2025 1016 DATA2145,2273,2408,2551,2703,2864,3034,3215,3406,3608,3823,4050 1018 DATA4291,4547,4817,5103,5407,5728,6069,6430,6812,7217,7647,8101 1020 DATA8583,9094,9634,10207,10814,11457,12139,12860,13625,14435,15294,16203 1022 DATA17167,18188,19269,20415,21629,22915,24278,25721,27251,28871,30588,32407 1024 DATA34334,36367,38539,40830,43258,45830,48556,51443,54502,57743,61776,64814 1200 DATA174,0,192,236,1,192,240,7,232,142,0,192,76,59,89,160,0,140 1201 DATA0,192,169,32,141,4,212,177,251,141,1,192,240,104,200,177,251,141 1202 DATA1,212,200,177,251,141,0,212,24,165,251,105,3,133,251,144,6,165 1203 DATA252,105,0,133,252,174,2,192,236,3,192,240,12,169,33,141,4,212 1204 DATA232,142,2,192,76,49,234,160,0,140,2,192,169,32,141,11,212,177 1205 DATA253,141,3,192,240,68,200,177,253,141,8,212,200,177,253,141,7,212 1206 DATA169,33,141,4,212,169,33,141,11,212,24,165,253,105,3,133,253,144 1207 DATA6,165,254,105,0,133,254,76,49,234,200,177,251,141,5,212,200,177 1208 DATA251,141,6,212,24,165,251,105,3,133,251,165,252,105,0,133,252,76 1209 DATA15,89,200,177,253,141,12,212,200,177,253,141,13,212,24,165,253,105 1210 DATA3,133,253,165,254,105,0,133,254,76,79,89,169,0,141,0,192,141 1211 DATA1,192,141,2,192,141,3,192,168,153,0,212,200,192,2,208,248,169 1212 DATA0,234,133,251,169,0,133,253,169,96,133,252,169,128,133,254,169,15 1213 DATA141,24,212,120,169,0,141,20,3,169,89,141,21,3,88,96,120,169 1214 DATA49,141,20,3,169,234,141,21,3,88,96,169,1,162,1,160,255,32 1215 DATA186,255,173,5,192,162,6,160,192,32,189,255,173,22,192,133,249,173 1216 DATA23,192,133,250,174,24,192,172,25,192,169,249,32,216,255,96,56,32 1217 DATA240,255,142,48,192,140,49,192,96,24,172,49,192,174,48,192,32,240 1218 DATA255,96,169,0,160,3,153,8,220,153,8,221,136,16,247,96,160,7 1219 DATA162,0,189,9,220,24,41,15,105,48,153,19,4,24,189,9,220,74 1220 DATA74,74,74,24,105,48,136,153,19,4,136,136,232,224,3,208,223,173 1221 DATA11,220,96,160,7,162,0,189,9,221,24,41,15,105,48,153,19,4 1222 DATA24,189,9,221,74,74,74,74,24,105,48,136,153,19,4,136,136,232 1223 DATA224,3,208,223,173,8,221,96 1402 IFLEFT$(A$,1)="R"THENA=0:GOTO303 1403 PRINTQ$"IMPROPER NOT !!":GOSUB8000:GOTO50 1424 IFF2<0THENPRINTQ$"ALL BLOCKS FULL FOR VOICE 1":GOSUB8000:GOTO426 1425 GOTO50 1426 B2=B2-1:N2=N2-3:F2=F2+3:GOTO50 1461 B$=RIGHT$(A$,2):IFLEFT$(B$,1)=" "ORA$="H"THEN314 1462 GOTO50 1471 B$=RIGHT$(A$,2):IFLEFT$(B$,1)=" "ORA$="S"THEN316 1472 POKEN2+V2,2:POKEN2+V2+1,0:GOTO317 1473 IFIN$<>"TI"THEN346 1474 PRINT"CLOCK 1 EQUAL ";:GOSUB5310:IFVAL(IN$)=0THEN480 1475 A=LEN(IN$):IFA>6ORIN$""THEN346 1476 GOTO476 2400 C=C-1:PRINT"SEARCHING FOR ";:FORI=1TOC:PRINTPEEK(LO+I);:NEXT:PRINT 2401 FORI=ATOA+B*3:FORJ=1TOC:IFPEEK(I+J-1)=PEEK(LO+J)THENNEXT:GOTO2403 2402 J=C+1:NEXT:GOTO2404 2403 QQ=(INT((I-QW)/3))+1:PRINT"BLOCK"QQ"POSITION"QQ*3-(INT((I-QW)/(QQ*3))+1) 2404 NEXT:PRINT"HIT A KEY TO CONTINUE." 2405 GETR$:IFR$=""THEN2405 2406 GOTO50 2410 IFA$<>"E"THEN500 2411 PRINTQ$"WHAT POSITION ";:GOSUB5310:A=VAL(IN$):PRINT"WHAT VALUE ";:GOSUB5310 2412 B=VAL(IN$):IFB>255ORA<0THEN50 2413 POKE8*4096+A-1,B:GOTO50 4000 D=1:PRINTQ$"DISK OR TAPE ? (D/T) ";:GOSUB5310:IFLEFT$(IN$,1)="D"THEND=8 4005 PRINTQ$"NAME OF FILE ? [157][157][157][157][157][157][157][157]";:GOSUB5310:QQ=1:LOADIN$,D,1 5310 IN$=" ":L=1:ZD$=CHR$(20):CR$=CHR$(13):W=646:I=1:G=15:N$="[157]":X=3:B$="ZQW*" 5320 GETZ$:IFZ$<>""THEN5350 5321 IFHTHEN5330 5322 IFV=2THENQ=F1:F1=F2:TE=C1:C1=C2 5323 SYSSY:PRINT"BLOCKS FREE"INT(F1/X)"::" 5324 SYSYS:SYSC1 5325 IFV=2THENF1=Q:C1=TE 5330 POKEW,INT(RND(.)*G)+I:PRINTMID$(B$,L,I)N$;:L=(XANDL)+I:GOTO5320 5350 ZI=ASC(Z$):ZL=LEN(IN$):IF(ZIAND127)<32THENPRINT" [157]";:GOTO5380 5360 IFZL>15THEN5320 5370 IN$=IN$+Z$:PRINTZ$;ZD$;Z$; 5380 IFZI=13THENIN$=MID$(IN$,2):Y$=LEFT$(IN$,1):PRINTCR$;:RETURN 5390 IFZI=20ANDZL>1THENIN$=LEFT$(IN$,ZL-1):PRINT"[157]";:GOTO5320 5400 IFZI=133THENZ$=CHR$(-20*(ZL>1)):FORZI=2TOZL:PRINTZ$;:NEXTZI:GOTO5310 5410 GOTO5320 7000 PRINT"[147]COMPLETE COMMAND LISTING" 7001 PRINT"########################" 7002 PRINT"*S = SAVES A FILE TO DISK 7003 [153]"*L = LOADS A FILE FROM DISK 7004 PRINT"*G = GOTO A SPECIFIED BLOCK (NOTE) 7005 [153]"*N = GOTO NEXT BLOCK (NOTE) 7006 PRINT"*B = GOTO PREVIOUS BLOCK (NOTE) 7007 [153]"*E = EDIT SPECIFIC SINGLE VALUE 7008 PRINT"*C = ALTER ONE OF MANY EDITOR VALUES 7009 [153]" V = VOICE T = TEMPO DSR = ADSR VALS" 7010 [153]" AU = AUTO DURATIONS TI = SET TIME" 7011 [153]" FS = FASTER/SLOWER X = BACK TO EDITOR" 7012 [153]"HIT 'F1' TO CONTINUE...." 7013 [161]R$:[139]R$[178]""[167]7013 7014 [139]R$[179][177]"INPUT"[167]50 7015 [153]"LOAD*? = DUMP MUSIC LISTINGS TO PRINTER" 7017 [153]"*P = PLAY ONE OR BOTH VOICES" 7018 [153]"*T = TRANSFER SECTIONS OF MUSIC" 7019 [153]"*F = FIND A CERTAIN NUMBER OF VALUES" 7020 [153]"*X = LEAVE PROGRAM AND SAVE ML 7021 PRINT"*H = COMMAND LISTING 7022 [153]"*V = CHANGE SID-CHIP SETTINGS" 7023 [153]"*S = CHANGE SPEED SETTING" 7025 [153]"ENTER OCTAVE, NOTE, A SPACE, THEN 7026 PRINT"DURATION TO DIRECTLY ENTER MUSIC. 7027 [153]"USE A '*' ONLY FOR A COMMAND. 7028 PRINT"HIT A KEY TO CONTINUE. 7029 [161]R$:[139]R$[178]""[167]7029 7030 [137]50 8000 [129]I[178]1[164]2500:[130]:[142] 10000 [153]"LOAD C-64 INTERRUPT MUSIC MAKER/EDITOR" 10002 [153]" VERSION 1.09/01/83" 10003 [153]" BY PETE LOBL" 10004 [129]I[178]1[164]1000:[130]:[151]198,0:[142] 20000 [153]"LOADTAPE OR DISK ?(T/D) ";:[141]5310:DV[178]8:[139][200](IN$,1)[178]"T"[167]DV[178]1 20204 R[178]22784:QQ[178]23206:LO[178]12[172]4096[170]22:[151]LO[170]1,[181](R[173]256) 20205 [151]LO,R[171]([181](R[173]256))[172]256:[151]LO[170]3,[181](QQ[173]256):[151]LO[170]2,QQ[171]([181](QQ[173]256))[172]256 20206 [153]"ML FILE NAME ? ";:[141]5310:LO[178]LO[171]16:[139][195](IN$)[178]0[167]20208 20207 [129]I[178]1[164][195](IN$):[151]LO[170]I[171]1,[198]([202](IN$,I,1)):[130] 20208 [151]LO[171]1,[195](IN$):[139][195](IN$)[178]0[175]DV[178]8[167][153]"MISSING FILE NAME !!":[137]20300 20209 [151]5[172]4096[170]10[172]256[170]10,DV:[158]5[172]4096[170]10[172]256[170]7 20300 [153]"TAKE IT EASY, HOPE YOU HAD FUN !!":[128] 49000 [153]"LOADWHAT VOICE ? (1/2) ";:[141]5310:IN[178][181]([197](IN$)):[139]IN[179]1[175]IN[177]2[167]50 49010 TV[178]IN:Z[178]6[172]4096:[139]IN[178]2[167]Z[178]8[172]4096 49020 [153]"STARTING BLOCK? ";:[141]5310:IN[178][181]([197](IN$)):[139]IN[179]0[175]IN[177]1730[167]50 49030 BB[178]IN 49040 VI[178]3[172]IN:[153]"ENDING BLOCK?";:[141]5310:IN[178][181]([197](IN$)):[139]IN[179]0[175]IN[177]1730[167]50 49050 EB[178]IN:EN[178]3[172]IN[170]Z:Z[178]VI[170]Z:[139]Z[177]EN[167]50 49100 [159]4,4:[153]#4,[199](10)"INTERRUPT MUSIC EDITOR PRINTOUT. (C) 1983 PETE LOBL" 49200 [152]4,[199](10)"VOICE"TV"BEGINNING BLOCK"BB"ENDING BLOCK"EB 49210 [152]4,[199](10) 50000 A[178][194](Z):B[178][194](Z[170]1):C[178][194](Z[170]2) 50020 [152]4,"BLOCK"BB; 50060 [139]A[178]0[167][152]4,"AT/DEC ="B"SUS/REL ="C:[137]50100 50080 [152]4,"DURATION"A; 50081 J[178]B[172]256[170]C:[129]I[178]1[164]12:[139]J[178]O1%(I)[167]A[178]1:B[178]I:[137]50090 50082 [139]J[178]O2%(I)[167]A[178]2:B[178]I:[137]50090 50083 [139]J[178]O3%(I)[167]A[178]3:B[178]I:[137]50090 50084 [139]J[178]O4%(I)[167]A[178]4:B[178]I:[137]50090 50085 [139]J[178]O5%(I)[167]A[178]5:B[178]I:[137]50090 50086 [139]J[178]O6%(I)[167]A[178]6:B[178]I:[137]50090 50087 [139]J[178]O7%(I)[167]A[178]7:B[178]I:[137]50090 50088 [139]J[178]O8(I)[167]A[178]8:B[178]I:[137]50090 50089 [130]:[139]J[177]0[167][152]4," ? NOTE":[137]50100 50090 I[178]13:[139]J[178]0[167][152]4," REST":[137]50100 50092 [130]:[152]4,A;:IN$[178]NS$(B):A$[178]NF$(B):[139]A$[178]IN$[167][152]4,A$:[137]50100 50094 [152]4,IN$" ("A$")" 50100 BB[178]BB[170]1:[139]BB[177]EB[167][153]#4,[199](10)"PRINTING COMPLETE."[199]10):[160]4:[137]50 50110 Z[178]Z[170]3:[137]50000